您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

使用分开的读和写高速缓存的动态高速缓存配置

  • 申请号:CN201110321215.X 申请公布号: CN102411541B
  • 申请日: 2011-10-12 申请公布日: 2014-12-24
  • 申请(专利权)人: 专利代理机构: 上海专利商标事务所有限公司
  • 分类号:G06F12/08;G06F13/16

专利介绍

本发明涉及使用分开的读和写高速缓存的动态高速缓存配置。将来自存储设备的数据存储在具有读高速缓存大小的读高速缓存中以及具有写高速缓存大小的写高速缓存中。读高速缓存和写高速缓存是分开的高速缓存。至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存和写高速缓存的高速缓存配置。高速缓存性能参数包括如下各项中的一个或多个:偏好得分、读和写操作的频率、存储设备的读和写性能、定位信息、以及连续读和写性能。动态高速缓存配置包括以下各项中的一个或多个:调整读高速缓存大小和/或写高速缓存大小、以及调整读高速缓存块大小和/或写高速缓存块大小。
1.一种计算设备(110;200),包括:xa0具有读高速缓存大小的读高速缓存(130;280),其中所述读高速缓存存储来自所述计算设备中的存储设备(150;260A;260B)的读请求的数据;以及xa0具有写高速缓存大小的写高速缓存(140;290),其中所述写高速缓存存储对所述计算设备中的所述存储设备的写请求的数据;xa0其中,所述读高速缓存和所述写高速缓存是分开的高速缓存,其中所述读高速缓存仅存储来自读请求的数据,并且所述写高速缓存仅存储来自写请求的数据;以及xa0其中所述计算设备在没有用户的干预的情况下,至少部分地基于由所述计算设备测量到的高速缓存性能参数来自动地和动态地调整所述读高速缓存的高速缓存配置以及所述写高速缓存的高速缓存配置,以提高文件系统吞吐量。xa0
2.如权利要求1所述的计算设备,其特征在于,所述计算设备包括应用程序编程接口,其中所述应用程序编程接口被配置来:xa0从文件系统接收所述计算设备读取或写入一个或多个数据块的偏好得分,其中所述偏好得分被所述计算设备至少部分地用来确定是否高速缓存所述一个或多个数据块,其中在所述计算设备确定要高速缓存所述一个或多个数据块时,所述偏好得分还至少部分地被所述计算设备用来确定何时将所述一个或多个数据块从所述读高速缓存或写高速缓存处驱逐掉。xa0
3.如权利要求1所述的计算设备,其特征在于,所述计算设备通过至少部分地基于高速缓存性能参数来设定所述读高速缓存大小和所述写高速缓存大小的方式来自动地和动态地调整高速缓存配置,所述高速缓存性能参数包括读请求的频率和写请求的频率。xa0
4.如权利要求1所述的计算设备,其特征在于,所述读高速缓存中的高速缓存块具有读高速缓存块大小,其中所述写高速缓存中的高速缓存块具有写高速缓存块大小,并且其中所述计算设备将所述读高速缓存块大小和所述写高速缓存块大小彼此独立地设定。xa0
5.如权利要求4所述的计算设备,其特征在于,所述计算设备至少部分地基于高速缓存性能参数来自动地和动态地调整所述读高速缓存块大小和所述写高速缓存块大小,所述高速缓存性能参数包括:xa0所述存储设备的读性能;以及xa0所述存储设备的写性能。xa0
6.如权利要求4所述的计算设备,其特征在于,所述计算设备至少部分地基于是否将读和写在所述计算设备上进行了定位来自动地和动态地调整所述读高速缓存块大小和所述写高速缓存块大小,其中:xa0在读定位增加时,增加读高速缓存块大小;xa0在读定位减少时,减少读高速缓存块大小;xa0在写定位增加时,增加写高速缓存块大小;xa0在写定位减少时,减少写高速缓存块大小。xa0
7.一种至少部分地由包括存储设备的计算设备来实现的方法,该方法用于从所述存储设备读取数据或将数据写入所述存储设备中,所述方法包括:xa0由所述计算设备从具有读高速缓存大小的读高速缓存处读取数据(310),其中所述读高速缓存存储来自所述计算设备中的所述存储设备的读请求的数据;xa0由所述计算设备将数据写入具有写高速缓存大小的写高速缓存中(320),其中所述写高速缓存存储对所述计算设备中的所述存储设备的写请求的数据,其中所述读高速缓存和所述写高速缓存是分开的高速缓存,其中所述读高速缓存仅存储来自读请求的数据,且其中所述写高速缓存仅存储来自写请求的数据;xa0由所述计算设备在没有用户的干预的情况下,至少部分地基于由所述计算设备测量到的高速缓存性能参数来自动地和动态地调整所述读高速缓存的高速缓存配置以及所述写高速缓存的高速缓存配置(330),以提高文件系统吞吐量。xa0
8.如权利要求7所述的方法,其特征在于,所述计算设备包括应用程序编程接口,所述方法还包括:xa0经由所述应用程序编程接口从与所述存储设备相关联的文件系统处接收所述计算设备读取或写入一个或多个数据块的偏好得分,其中所述偏好得分至少部分地被所述计算设备用来确定:xa0是否高速缓存所述一个或多个数据块;以及xa0在将所述一个或多个数据块存储在所述读高速缓存或所述写高速缓存中时,何时将所述一个或多个数据块从所述读高速缓存或所述写高速缓存中驱逐掉。xa0
9.如权利要求7所述的方法,其特征在于,自动地和动态地调整高速缓存配置包括:xa0由所述计算设备至少部分地基于高速缓存性能参数来调整所述读高速缓存大小和所述写高速缓存大小,所述高速缓存性能参数包括读请求的频率和写请求的频率。xa0
10.如权利要求7所述的方法,其特征在于,所述读高速缓存中的高速缓存块具有读高速缓存块大小,所述写高速缓存中的高速缓存块具有写高速缓存块大小,其中所述计算设备将所述读高速缓存块大小和所述写高速缓存块大小彼此独立地设定,并且其中自动地和动态地调整所述高速缓存配置包括:xa0由所述计算设备至少部分地基于高速缓存性能参数来调整所述读高速缓存块大小和所述写高速缓存块大小,所述高速缓存性能参数包括:xa0所述存储设备的读性能;以及xa0所述存储设备的写性能。xa0技术领域
本发明涉及用于进行动态高速缓存配置的方法和系统。
背景技术
诸如移动设备等设备可能受到低效的文件系统吞吐量的影响。这种低效的文件系统吞吐量可由较小的磁盘高速缓存以及读和写活动所在的高速缓存来引起。在使用单个高速缓存来存储来自读和写操作两者的数据的系统中,这种低效会被放大。例如,使用单个高速缓存并不提供为读和写操作两者独立地配置单个高速缓存的能力,该读和写操作通常具有不同的性能要求。因此,存在足够机会来改进涉及高速缓存配置的技术。
发明内容
应用了涉及使用分开的读和写高速缓存的动态高速缓存配置的各种技术。例如,计算设备包括具有读高速缓存大小的读高速缓存以及具有写高速缓存大小的分开的写高速缓存。读高速缓存存储来自计算设备的存储设备的读请求的数据,且写高速缓存存储对计算设备的存储设备的写请求的数据。读高速缓存仅存储来自存储设备的读操作的数据,且写高速缓存仅存储对存储设备的写操作的数据。计算设备至少部分地基于由计算设备测量到的高速缓存性能参数来自动和动态地(例如,没有用户交互)调整读高速缓存和写高速缓存的高速缓存配置。在一些实现中,自动和动态的调整包括调整读和/或写高速缓存大小,和/或调整读和/或写高速缓存块大小。在另一示例中,用于从存储设备读取数据以及向存储设备写入数据的方法包括由计算设备从具有读高速缓存大小的读高速缓存处读取数据,其中该读高速缓存存储来自计算设备中的存储设备的读请求的数据。方法还包括由计算设备将数据写入到具有写高速缓存大小的写高速缓存中,其中该写高速缓存存储来自对计算设备中的存储设备的写请求的数据。读高速缓存和写高速缓存是分开的高速缓存。读高速缓存仅存储来自读请求的数据,且写高速缓存仅存储来自写请求的数据。方法还包括由计算设备至少部分地基于由该计算设备测量到的高速缓存性能参数来自动地和动态地(例如,在没有用户干预的情况下)调整读高速缓存和写高速缓存的高速缓存配置。在另一示例中,计算设备包括具有读高速缓存大小的读高速缓存和具有写高速缓存大小的分开的写高速缓存。读高速缓存存储来自计算设备中的存储设备的读请求的数据,且写高速缓存存储来自对该计算设备中的存储设备的写请求的数据。读高速缓存仅存储来自该存储设备的读操作的数据,且写高速缓存仅存储来自对该存储设备的写操作的数据。计算设备至少部分地基于由该计算设备测量到的高速缓存性能参数来自动地和动态地(例如,在没有用户干预的情况下)调整读高速缓存和写高速缓存的高速缓存配置,其中读高速缓存中的高速缓存块具有读高速缓存块大小,且写高速缓存中的高速缓存块具有写高速缓存块大小,并且其中计算设备将读高速缓存块大小和写高速缓存块大小彼此独立地设定。计算设备至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存块大小和写高速缓存块大小。所述高速缓存性能参数包括存储设备的读性能和存储设备的写性能。在一些实现中,计算设备还包括应用程序编程接口(API),该应用程序编程接口被配置成接收计算设备读取或写入一个或多个数据块的偏好得分。该偏好得分至少部分地被计算设备用来确定是否高速缓存一个或多个数据块,以及在计算设备确定要高速缓存一个或多个数据块时,确定何时将该一个或多个数据块从读高速缓存或写高速缓存处驱逐掉。参考附图阅读以下详细描述,将更清楚前述和其它特征和优点。
附图说明
图1是示出使用了分开的读和写高速缓存的示例性计算设备的框图。图2是示出使用了分开的读和写高速缓存的计算设备中的示例性组件的框图。图3是示出使用分开的读和写高速缓存的动态高速缓存配置的示例性方法的流程图。图4是示出使用偏好得分来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法的流程图。图5是示出使用读和写请求的频率来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法的流程图。图6是示出通过调整读和写高速缓存块大小来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法的流程图。图7是示出示例性移动设备的框图。
具体实施方式
以下描述涉及使用分开的读和写高速缓存来提供动态高速缓存配置技术和方案的技术和方案。各种技术和方案可组合或单独使用。不同的实施例可实现所描述的技术和方案的一个或多个。I.示例性读高速缓存和写高速缓存在此处所描述的各技术和方案中,高速缓存在读取或写入存储设备(例如,硬盘、闪存、光盘等)时提供了对数据的中间存储。在此处所描述的各技术和方案中,将高速缓存分成读高速缓存和写高速缓存。将高速缓存分成独立的和不同的读和写高速缓存允许分开地(例如,相互独立地)配置和/或优化读和写高速缓存。在一些实现中,将读高速缓存和写高速缓存实现为分开的物理高速缓存(例如,每个高速缓存都具有其自己单独的存储器组件)。在其他实现中,将读高速缓存和写高速缓存存储在同一存储器中,但其在逻辑上却是分开的(例如,使用该存储器的某一部分来存储读高速缓存数据,并使用该存储器的一不同部分来存储写高速缓存数据)。例如,可将读高速缓存和写高速缓存存储在计算设备的专用高速缓存储器组件中,或者将其存储在计算设备的主存储器中。不管读高速缓存和写高速缓存是如何被分开的(例如,物理上地或逻辑上地),读高速缓存和写高速缓存各自都具有独立的高速缓存大小。每个高速缓存的大小(读高速缓存大小和写高速缓存大小)在数据存储容量方面指示了高速缓存的大小。例如,高速缓存大小可以是512千字节(KB)或1兆字节(MB)。读高速缓存大小和写高速缓存大小可以是不同的大小。例如,读高速缓存大小可以是1MB,且写高速缓存大小可以是512KB。II.示例性高速缓存配置在此处所描述的技术和方案中,可调整读高速缓存和写高速缓存的高速缓存配置。可测量各种参数,并使用这些参数来调整读高速缓存和写高速缓存的配置。在一特定实现中,至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存和/或写高速缓存。在没有用户的干预或输入的情况下,执行对高速缓存配置的自动和动态调整(例如,由诸如计算设备等实现该高速缓存的系统来自动地执行)。在一特定实现中,高速缓存配置包括读高速缓存大小和/或写高速缓存大小。调整高速缓存配置包括调整读高速缓存大小和/或写高速缓存大小。在读高速缓存和写高速缓存共享存储器空间的情况下,可一起调整读高速缓存大小和写高速缓存大小。例如,在具有1MB的共享高速缓存随机存取存储器(RAM)的计算设备中,该计算设备可通过将该1MB的共享高速缓存RAM的一部分分配给读高速缓存并将剩余的高速缓存RAM分配给写高速缓存(例如,将768KB分配给读高速缓存,并将256KB分配给写高速缓存),来自动地和动态地调整读高速缓存大小和写高速缓存大小。在读高速缓存和写高速缓存使用分开的物理存储器空间的情况下,仍可调整各高速缓存大小。例如,在具有1MB的读高速缓存RAM和1MB的写高速缓存RAM的计算设备中,该计算设备可自动地和动态地将该读高速缓存存储器的一部分分配给写高速缓存使用,并且反之亦然(例如,除了1MB的读高速缓存RAM以外,还将写高速缓存RAM中的256KB分配来存储读高速缓存数据,而将写高速缓存RAM中的768KB仍用于存储写高速缓存数据)。在一特定实现中,高速缓存配置包括读高速缓存块大小和/或写高速缓存块大小。调整高速缓存配置包括调整读高速缓存块大小和/或写高速缓存块大小。高速缓存块大小指在读高速缓存和写高速缓存中的高速缓存条目的大小(有时称为高速缓存行大小(cachexa0linexa0size))。取决于该情况,可使用不同的高速缓存块大小。例如,可以根据在每个高速缓存块中存储的数据的字节数(例如,8字节、512字节、2KB、64KB等)来定义高速缓存块大小。还可根据读取或写入高速缓存内容的存储设备块大小(例如,物理块大小)来定义高速缓存块大小。例如,如果存储设备(例如,硬盘或闪存)将数据存储在512字节的块(存储设备块大小)中,则可将高速缓存块大小设定为匹配(例如,512字节的高速缓存块大小),或者可将高速缓存块大小设定为倍数(例如,2KB的高速缓存块大小,其存储4个存储设备块)。可将读高速缓存块大小和写高速缓存块大小设定为相同的块大小或不同的块大小(例如,可将读高速缓存块大小设定为4KB,而将写高速缓存块大小设定为2KB)。III.示例性高速缓存性能参数在此处所描述的技术和方案中,可至少部分地基于高速缓存性能参数来调整读高速缓存和写高速缓存的高速缓存配置。高速缓存性能参数指读和/或写高速缓存的性能参数以及关联存储设备的性能参数。高速缓存性能参数的示例包括偏好得分、读和/或写请求的频率、读和/或写存储设备性能、读和/或写定位、以及读和/或写连续性能。在一特定实现中,由操作读和写高速缓存的计算设备来测量高速缓存性能参数。例如,计算设备的处理单元可监控读和写高速缓存的性能参数以及关联存储设备的性能参数。还可由计算设备的特定组件(诸如,存储设备性能监控组件)来测量性能参数,或者从计算设备的其他组件(诸如,文件系统组件)处接收性能参数。IV.自动地和动态地调整高速缓存配置的示例在此处所描述的技术和方案中,可自动地和动态地调整高速缓存配置。在一特定实现中,至少部分地基于(例如,由包括读高速缓存和写高速缓存的计算设备测量到的)高速缓存性能参数来自动地和动态地调整高速缓存配置。在一特定实现中,计算设备提供应用程序编程接口(API)来发送和/或接收高速缓存性能参数。例如,可从计算设备中的组件或模块(例如,硬件和/或软件组件或模块)处接收高速缓存性能参数,例如从文件系统组件处接收高速缓存性能参数。在该特定实现中,经由API所接收到的高速缓存性能参数包括从该文件系统组件处接收到的偏好得分(例如,整数值)。使用偏好得分来指示应该将存储设备块(或者存储设备块的集合)存储在高速缓存中,还是应该使其经过(passxa0through)该高速缓存。提供API允许对可用读高速缓存和写高速缓存存储器的更好和更有效的使用,并改进对高速缓存策略的驱逐和替换。例如,计算设备可使用偏好得分来将读高速缓存中的较低值块替换成较高值块(例如,通过比较双方的偏好得分)。作为另一示例,文件系统可将较高的偏好得分给予包括该文件系统的根目录的各个块(或者,块集合)。作为又一示例,文件系统可将较低的偏好得分给予在不久的将来不太可能需要(例如,基于由文件系统监控到的读和/或写模式来)进行文件系统预测的较大的写和/或读块。文件系统还使用偏好得分来决定何时将块(或者块组)从高速缓存中驱逐掉(例如,通过首先将具有最低偏好得分的块或者块组驱逐掉)。还可单独使用偏好得分或者将其与其他高速缓存性能参数组合使用来确定何时将存储设备块存储在高速缓存中,以及何时将所存储的块从高速缓存中替换掉或驱逐掉。在一些实现中,至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存大小和/或写高速缓存大小。在一实现中,基于读请求的频率和写请求的频率来调整分配来存储读高速缓存数据的存储器的量和/或分配来存储写高速缓存数据的存储器的量。例如,如果读请求的频率与写请求的频率相比要大一阈值,则可增加读高速缓存大小(例如,可将1MB的读高速缓存大小和1MB的写高速缓存大小调整为1.25MB的读高速缓存大小和0.75MB的写高速缓存大小)。在一些实现中,至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存块大小和/或写高速缓存块大小。可独立地调整读高速缓存块大小和写高速缓存块大小(即,读高速缓存块大小可以是与写高速缓存块大小不同的块大小)。在一个实现中,计算设备测量存储设备的读和/或写性能,包括写和/或读操作花费了多久来完成对存储设备的写入/读取。例如,如果存储设备对读请求的响应较快(读请求完成较快),但对写请求的响应较慢(写请求完成较慢),则可减少写高速缓存块大小(因为更小大小的写高速缓存块将完成的更快)和/或增加读高速缓存块大小(这可增加高速缓存性能,同时仍维持较快的读请求完成)。在这种情况下,还可能是在任何给定时间处高速缓存中待处理的写请求比读请求要多,因此可增加写高速缓存大小和/或减少读高速缓存大小。在另一实现中,(例如,由计算设备)将定位信息(例如,读和/或写操作的定位信息的历史)作为用于确定读高速缓存块大小和/或写高速缓存块大小的高速缓存性能参数来测量。定位指正在读取或写入的块在存储设备上是否彼此邻近。存储设备上被高度定位的块可比未被定位的(例如,分段的)块更快地被读取或写入。如果读定位增加了,则增加读高速缓存块大小,以便将更大数量的邻近存储设备块存储在每一读高速缓存块中。在另一方面,如果读定位减少了,则减少读高速缓存块大小,使得读请求将更少的邻近存储设备块存储在每一读高速缓存中,并由此增加读高速缓存中的读块多样性。以相同的方式来调整写高速缓存。在另一实现中,将存储设备的连续读和/或写性能作为用于确定读高速缓存块大小和/或写高速缓存块大小的高速缓存性能参数来测量。连续性能指存储设备读取或写入多个连续的存储设备块所花费的时间量。可使用连续读和/或写性能来确定读高速缓存块大小和/或写高速缓存块大小。例如,如果计算设备正顺序地写出一较大的文件(例如,较大的视频文件),则可增加写高速缓存块大小。然而,如果过度地增加了写高速缓存块大小,则可导致减少的性能(例如,以高速缓存中的块多样性为代价)。因此,可使用连续性能测量来设定写高速缓存块大小的上限。例如,如果写操作的连续性能从一个存储设备块增加到16个存储设备块,然后达到稳定,使得写入大于等于32个存储设备块的连续性能与写入16个存储设备块的连续性能相同(或更小),则可将写高速缓存块大小的上限设定为16。可对读高速缓存执行类似的测量,并可确定读高速缓存块大小的上限。在不同的实现中,可基于本小节中描述的技术中的一个或多个来调整(例如,独立地调整)读和/或写高速缓存的高速缓存大小和/或高速缓存块大小。可组合地或独立地应用各技术。V.包括分开的读和写高速缓存的示例性计算设备图1描绘了包括分开的读和写高速缓存的示例性计算设备110。计算设备110可以是诸如移动计算设备(例如,智能手机、移动电话、平板电脑、上网本等)的任何类型的计算设备,或者是诸如台式计算机、膝上型计算机、笔记本计算机、媒体播放器、数字相机或便携式摄像机等其他类型的计算设备。计算设备110包括具有分开的读高速缓存130和写高速缓存140的高速缓存120。读高速缓存130具有读高速缓存大小(例如,1MB、2MB等),且写高速缓存140具有写高速缓存大小。读高速缓存大小和写高速缓存大小可以是相同的大小,或者它们可以是不同的大小。在一些实现中,读高速缓存130和写高速缓存140共享高速缓存存储器空间(例如,RAM)。例如,可将一定量的高速缓存RAM(例如,4MB)在读高速缓存(例如,分配到了整个高速缓存RAM中的3MB)和写高速缓存(例如,分配到了整个高速缓存RAM中的1MB)之间进行划分。在其他实现中,读高速缓存130和写高速缓存140具有分开的物理高速缓存存储器。读高速缓存130存储来自计算设备110中的一个或多个存储设备(诸如来自存储设备150)的读请求的数据。写高速缓存140存储对计算设备110中的一个或多个存储设备(诸如对存储设备150)的写请求的数据。读高速缓存130仅存储读操作的数据,且写高速缓存140仅存储写操作的数据。计算设备110至少部分地基于高速缓存性能参数来自动地和动态地(例如,没有任何用户干预或输入)调整读高速缓存130和写高速缓存140的高速缓存配置。计算设备110可独立地为读高速缓存130和写高速缓存140中的每一个调整高速缓存配置。由计算设备110(例如,由计算设备110中的各个组件或模块)来测量高速缓存性能参数。在一些实现中,计算设备110自动地和动态地调整读高速缓存130的读高速缓存大小以及写高速缓存140的写高速缓存大小。例如,可基于高速缓存性能参数来调整读高速缓存大小和写高速缓存大小,所述高速缓存性能参数包括(例如,经由API来)读取和/或写入各高速缓存块的偏好得分、读请求的频率和写请求的频率、存储设备150的读和写性能、定位信息、和/或连续读和写性能。在一些实现中,计算设备110自动地和动态地调整读高速缓存130的读高速缓存块大小以及写高速缓存140的写高速缓存块大小。例如,可基于高速缓存性能参数来调整读高速缓存块大小和写高速缓存块大小,所述高速缓存性能参数包括读请求的频率和写请求的频率、存储设备150的读和写性能、定位信息、和/或连续读和写性能。图2描绘了计算设备200中的各示例性组件,该计算设备200使用了分开的读和写高速缓存。计算设备200包括用于执行计算功能的各种组件和/或模块,包括用户应用程序210、操作系统一系统调用处理程序220、文件系统处理程序230、高速缓存RAM管理器和块获取器240、以及存储设备性能监控器250。计算设备200包括高速缓存RAMxa0270,该高速缓存RAMxa0270具有分配给读高速缓存280和写高速缓存290的存储空间。读高速缓存280和写高速缓存290是分开的高速缓存,其中读高速缓存280仅存储涉及存储设备的读操作的数据,且写高速缓存290仅存储涉及存储设备的写操作的数据。计算设备200基于高速缓存性能参数来自动地和动态地调整高速缓存配置(例如,读高速缓存280和写高速缓存290中的每一个的高速缓存大小以及读高速缓存280和写高速缓存290中的每一个的高速缓存块大小)。例如,可至少部分地经由存储设备性能监控器250来测量高速缓存性能参数。如在示例性读高速缓存280中描绘地,该读高速缓存正存储有两个读高速缓存块。这两个读高速缓存块中的每一个正存储有两个存储设备块。因此,如在280处所描绘地,读高速缓存块大小等于两个存储设备块(例如,存储设备260A或260B中的两个物理块)。如在示例性写高速缓存290中描绘地,该写高速缓存正存储有两个写高速缓存块。这两个写高速缓存块中的每一个正存储有一个存储设备块。因此,如在290处所描绘地,写高速缓存块大小等于一个存储设备块(例如存储设备260A或260B中的一个物理块)。在一些实现中,计算设备200自动地和动态地调整读高速缓存280的读高速缓存大小以及写高速缓存290的写高速缓存大小。例如,可基于高速缓存性能参数来调整读高速缓存大小和写高速缓存大小,高速缓存性能参数包括(例如经由API来)读取和/或写入各高速缓存块的偏好得分、读请求的频率和写请求的频率、存储设备260A-B的读和写性能、定位信息、和/或连续读和写性能。在一些实现中,计算设备200自动地和动态地调整读高速缓存280的读高速缓存块大小以及写高速缓存290的写高速缓存块大小。例如,可基于高速缓存性能参数来调整读高速缓存块大小和写高速缓存块大小,所述高速缓存性能参数包括读请求的频率和写请求的频率、存储设备260A-B的读和写性能、定位信息、和/或连续读和写性能。VI.使用分开的读和写高速缓存的动态高速缓存配置的示例性方法图3示出使用分开的读和写高速缓存来进行动态高速缓存配置的示例性方法300。例如,可使用图1中描绘的计算设备或图2中描绘的计算设备来实现该方法。在310处,从具有读高速缓存大小的读高速缓存处读取数据。读高速缓存仅存储来自存储设备的读请求的数据。在320处,将数据写入具有写高速缓存大小的写高速缓存中。写高速缓存仅存储来自对存储设备的写请求的数据。读高速缓存和写高速缓存是分开的高速缓存。在330处,至少部分地基于高速缓存性能参数来自动地和动态地调整读高速缓存和写高速缓存的高速缓存配置。例如,由计算设备基于该计算设备测量到的高速缓存性能参数来自动地和动态地调整330高速缓存配置。在一特定实现中,通过调整读高速缓存大小和/或读高速缓存块大小,和/或通过调整写高速缓存大小和/或写高速缓存块大小来自动地和动态地调整高速缓存配置。例如,可基于高速缓存性能参数来调整读高速缓存大小和写高速缓存大小,所述高速缓存性能参数包括(例如,经由API)读取和/或写入各高速缓存块的偏好得分、读请求的频率和写请求的频率、存储设备的读和写性能、定位信息、和/或连续读和写性能。可基于高速缓存性能参数来调整读高速缓存块大小和写高速缓存块大小,所述高速缓存性能参数包括读请求的频率和写请求的频率、存储设备的读和写性能、定位信息、和/或连续读和写性能。图4示出使用偏好得分来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法400。例如,可使用图1中描绘的计算设备或图2中描绘的计算设备来实现该方法。在410处,从具有读高速缓存大小的读高速缓存处读取数据。读高速缓存仅存储来自存储设备的读请求的数据。在420处,将数据写入具有写高速缓存大小的写高速缓存中。写高速缓存仅存储来自对存储设备的写请求的数据。读高速缓存和写高速缓存是分开的高速缓存。在430处,从存储设备处接收读取或写入一个或多个数据块的偏好得分。可使分开的偏好得分与每个读块和写块相关联,或者可将偏好得分分配给读块组或写块组。在一特定实现中,从文件系统处经由API来接收各偏好得分。在440处,作出是否高速缓存该一个或多个读或写块的决定。该决定是至少部分地基于偏好得分而作出440的。例如,从存储设备处读取块(包括一个或多个存储设备块的读块)的计算设备可(例如,从与该存储设备相关联的文件系统处)接收该读块的偏好得分。然后,计算设备使用偏好得分来确定是否将读块存储(高速缓存)在高速缓存中。如果该决定是不存储该读块,则使该数据块“经过”(即,不将该数据块存储在读高速缓存中)。在450处,当将一个或多个块存储在高速缓存中而没有使其经过时,作出何时驱逐该一个或多个所存储的块的决定。例如,已将从存储设备处读取的一个或多个块存储在读高速缓存中的计算设备需要决定何时将在该高速缓存中存储的一个或多个块移除或替换掉。可基于一个或多个块的偏好得分来将该一个或多个块从读高速缓存中驱逐掉(例如,在驱逐读高速缓存中具有较高偏好得分的块之前,先驱逐读高速缓存中具有较低偏好得分的块)。图5示出使用读和写请求的频率来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法500。例如,可使用图1中描绘的计算设备或图2中描绘的计算设备来实现该方法。在510处,从具有读高速缓存大小的读高速缓存处读取数据。该读高速缓存仅存储来自存储设备的读请求的数据。在520处,将数据写入具有写高速缓存大小的写高速缓存中。写高速缓存仅存储来自对存储设备的写请求的数据。读高速缓存和写高速缓存是分开的高速缓存。在530处,通过至少部分地基于读请求的频率和写请求的频率来调整读高速缓存大小和写高速缓存大小的方式,来自动地和动态地调整读高速缓存和写高速缓存的高速缓存配置。在一特定实现中,当来自存储设备的读操作的频率与来自该存储设备的写操作的频率相比要大一阈值时,自动地和动态地增加读高速缓存大小。如果增加了读高速缓存大小则可相应地减少写高速缓存大小,或者可独立地增加/减少读和写高速缓存大小。图6示出通过调整读和写高速缓存块大小来对分开的读和写高速缓存进行动态高速缓存配置的示例性方法600。例如,可使用图1中描绘的计算设备或图2中描绘的计算设备来实现该方法。在610处,从具有读高速缓存大小的读高速缓存处读取数据。该读高速缓存仅存储来自存储设备的读请求的数据。在620处,将数据写入到具有写高速缓存大小的写高速缓存中。写高速缓存仅存储来自对存储设备的写请求的数据。读高速缓存和写高速缓存是分开的高速缓存。在630处,至少部分地通过调整读高速缓存块大小和写高速缓存块大小来自动地和动态地调整高速缓存配置。可基于各种高速缓存性能参数来调整读高速缓存块大小和写高速缓存块大小。例如,可使用在640A、640B和640C处描绘的技术中的一个或多个来调整读高速缓存块大小和写高速缓存块大小。在640A处,可基于存储设备的读和/或写性能来调整读高速缓存块大小和/或写高速缓存块大小。例如,如果性能历史指示写操作花费了较长的时间,则可增加写高速缓存块大小。在604B处,基于来自存储设备的读和/或写定位信息来调整读高速缓存块大小和/或写高速缓存块大小。在一特定实现中,当测量到定位增加时,增加读和/或写高速缓存块大小,并且当测量到定位减少时,减少读和/或写高速缓存块大小。在640C处,基于存储设备的连续读和/或写性能来调整读高速缓存块大小和/或写高速缓存块大小。例如,可确定读和/或写缓存块大小的上限。VII.示例性移动设备此处描述的技术和方案可由诸如移动设备(移动计算设备)等计算设备中的软件和/或硬件来执行。例如,计算设备包括台式计算机、膝上型计算机、笔记本计算机、上网本、平板设备、媒体播放器、以及其他类型的计算设备。移动设备包括例如移动电话、个人数字助理(PDA)、智能电话、平板电脑、膝上型计算机、以及其他类型的移动计算设备。移动设备通常比其他类型的计算设备(例如,台式或膝上型计算机)具有更有限的计算资源(例如,处理单元速度、存储器、图形资源等)。因此,在一些情况下,移动设备能更多地从此处描述的技术和方案中受益。然而,取决于各实现的细节,任何类型的计算设备都能从此处描绘的技术和方案中受益。图7描绘了能够实现此处所描述的技术和方案的移动设备700的详细示例。移动设备700包括各种任选的硬件和软件组件,其通常在702处示出。该移动设备中的任何组件702可与任何其他组件通信,但出于容易例示的目的而未示出所有连接。该移动设备可以是各种计算设备(例如,蜂窝电话、智能电话、手持式计算机、膝上型计算机、笔记本计算机、平板设备、上网本、个人数字助理(PDA)、相机、摄像机等)中的任一个,并且可允许与诸如Wi-Fi、蜂窝或卫星网络等一个或多个移动通信网络704进行无线双向通信。所示移动设备700可包括用于执行如信号编码、数据处理、输入/输出处理、电源控制和/或其他功能等任务的处理单元710(例如,控制器或处理器),诸如信号处理器、微处理器、ASIC、或其他控制和处理逻辑电路。操作系统712可控制对组件702的分配和使用,并支持一个或多个应用程序714。应用程序可包括公共移动计算应用程序(例如,电子邮件应用程序、日历、联系人管理器、web浏览器、消息接发应用程序、视频或电影应用程序、图片或照片应用程序)、或任何其他计算应用。所示移动设备700可包括存储器720。存储器720可包括不可移动存储器722和/或可移动存储器724。不可移动存储器722可包括RAM、ROM、闪存、硬盘、或其他众所周知的存储器存储技术。可移动存储器724可包括闪存或订户身份模块(SIM)卡——其在GSM通信系统中是众所周知的,或者其他众所周知的存储器存储技术,如“智能卡”。存储器720可用于存储数据和/或用于运行操作系统712和应用程序714的代码。示例数据可包括经由一个或多个有线或无线网络发送给和/或接收自一个或多个网络服务器或其他设备的网页、文本、图像、声音文件、视频数据、或其他数据集。存储器720可用于存储诸如国际移动订户身份(IMSI)等订户标识符,以及诸如国际移动设备标识符(IMEI)等设备标识符。可将此类标识符传送给网络服务器以标识用户和装备。移动设备700能支持诸如触摸屏732、麦克风734、相机736(例如,能够捕捉静态图像和/或视频图像)、物理键盘738以及轨迹球740等的一个或多个输入设备730以及诸如扬声器752和显示器754等的一个或多个输出设备750。其他可能的输出设备(未示出)可包括压电或其他触觉输出设备。一些设备可服务一个以上的输入/输出功能。例如,触摸屏732和显示器754可被组合在单个输入/输出设备中。无线调制解调器760可被耦合至天线(未示出),并且可支持处理器710与外部设备之间的双向通信,如本领域中清楚理解的。调制解调器760被一般性地示出,并且可包括用于与移动通信网络704和/或其它基于无线电的调制解调器(例如蓝牙764或Wi-Fixa0762)进行通信的蜂窝调制解调器。无线调制解调器760通常被配置成与一个或多个蜂窝网络(诸如,用于单个蜂窝网络内、蜂窝网络之间、或移动设备与公共交换电话网络(PSTN)之间的数据和语音通信的GSM网络)进行通信。移动设备可进一步包括至少一个输入/输出端口780、电源782、卫星导航系统接收机784(诸如全球定位系统(GPS)接收机)、加速计786、收发机788(用于无线发射模拟或数字信号)和/或物理连接器737,它可以是USB端口、IEEExa01394(火线)端口、和/或RS-232端口。所示组件702不是必需的或所有都包括的,因为可删除任何组件并且可添加其他组件。移动设备700能实现在此描述的技术。例如,移动设备700可自动地和动态地调整在存储器722中存储的分开的读和写高速缓存的高速缓存配置。VIII.示例替换和变化虽然为方便呈现起见所公开的方法的一些操作是以特定的顺序次序来描述的,但应当理解,这一描述方法涵盖重新安排,除非以下阐明的具体语言需要特定排序。例如,在某些情况下,可以重新安排或并发执行顺序地描述的操作。此外,为简明起见,附图可能未示出其中所公开的方法可结合其他方法使用的各种方式。所公开的方法中的任一个可被实现为存储在一个或多个计算机可读介质(例如,有形的计算机可读介质(诸如一个或多个光学介质盘)、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如硬驱动器))上并且在计算机(例如,任何可购买的计算机,包括包含计算硬件的智能电话或其它移动设备)上执行的计算机可执行指令。用于实现所公开的技术的计算机可执行指令中的任何一个以及在所公开的实施例实现期间所创建和使用的任何数据可被存储在一个或多个计算机可读介质上。计算机可执行指令可以是专用软件应用程序或,例如,经由web浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。可,例如,在单个本地计算机(例如,任何合适的可购买计算机)上或在使用一个或多个网络计算机的网络环境(例如,经由因特网、广域网、局域网、客户机-服务器网络(诸如,云计算网络)、或其他此类网络)中执行这些软件。为清楚起见,只描述了基于软件的各实现的某些所选择的方面。省略了本领域公知的其他细节。例如,应当理解,所公开的技术不限于任何特定计算机语言、或程序。例如,所公开的技术可由用C++、Java、Perl、Javascript、Adobexa0Flash、或任何其他合适的编程语言编写的软件来实现。同样,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且无需在本公开中进行详细阐述。此外,基于软件的实施例中的任何一个(包括,例如,用于使计算设备执行所公开的方法中的任何一种的计算机可执行指令)可通过合适的通信装置来上传、下载、或远程访问。这些合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或任何这样的通信手段。所公开的方法、装置和系统决不应被解释成限制性的。相反,本发明针对各公开的实施方式(单独地或彼此的各种组合和子组合)的所有新颖和非显而易见特征和方面。所公开的方法、装置和系统不限于任何具体方面或特征或其组合,所公开的各实施方式也不要求存在任何一个或多个具体优点或解决各个问题。因此,要求保护落入这些权利要求的精神和范围内的所有内容作为本发明。